package com.bt.lms.service;
import com.bt.lms.bo.Page;
import com.bt.lms.entity.CourseInfo;
import com.bt.lms.entity.TeachingPlanBasicInfo;
import com.bt.lms.bo.TeachingPlanCondition;

import java.util.List;

/**
 * 教学计划模块
 * @author 李舒淇
 */
public interface TeachingPlanService {

    /**
     * 新增教学计划功能
     * @param teachingPlanBasicInfo  教学计划信息
     * @return   是否成功
     */
    public boolean add(TeachingPlanBasicInfo teachingPlanBasicInfo) throws Exception;

    /**
     * 关联课程功能
     * @param id 教学计划ID
     * @param courses 课程信息
     * @return 是否成功
     */
    public boolean relevancyCourse(Long id, List<CourseInfo> courses);

    /**
     * 查看教学计划功能
     * @param id  教学计划 id
     * @return    教学计划
     */
    public TeachingPlanBasicInfo details(Long id) throws Exception;


    /**
     * 确认完成功能
     * @param id 教学计划ID
     * @return 是否成功
     */
    public boolean accomplish(Long id) throws Exception;

    /**
     * 启用功能
     * @param id 教学计划ID
     * @return 是否成功
     */
    public boolean enable(Long id) throws Exception;

    /**
     * 编辑功能
     * @param id 教学计划ID
     * @param teachingPlanBasicInfo 教学计划信息
     * @return 是否成功
     */
    public boolean edit(Long id,TeachingPlanBasicInfo teachingPlanBasicInfo) throws Exception;

    /**
     * 删除功能
     * @param id 要删除的教学计划ID
     * @return 是否成功
     */
    public boolean delete(Long id) throws Exception;

    /**
     * 分页条件查询功能
     * @param page 分页条件模型
     *                  每一页条数:
     *                  页码:
     *                  数据：（分页条件）
     * @return 分页模型
     *         每页多少条数据
     *         总条数：
     *         页码：
     *         数据：（教学计划信息）
     */
    public Page<TeachingPlanBasicInfo> query(Page<TeachingPlanCondition> page, Page<TeachingPlanBasicInfo> teachingPage);

}
